iconhelper: check if surface was invalidated
authorChristian Hergert <christian@hergert.me>
Thu, 28 Apr 2016 00:45:01 +0000 (17:45 -0700)
committerChristian Hergert <christian@hergert.me>
Thu, 28 Apr 2016 00:45:01 +0000 (17:45 -0700)
Fetching the style may cause the surface to be invalidated.

gtk/gtkiconhelper.c

index b8737e7aa42b39bb672741eb2f0ee81d98acbd7f..7baccb0ae36eee82d21cfd0ff83741158175c00d 100644 (file)
@@ -892,15 +892,21 @@ _gtk_icon_helper_draw (GtkIconHelper *self,
                        gdouble x,
                        gdouble y)
 {
+  GtkCssStyle *style;
+
   gtk_icon_helper_ensure_surface (self);
 
+  /*
+   * Get the style first as the rendered surface maybe cleared if the style
+   * must be recomputed
+   */
+  style = gtk_css_node_get_style (gtk_css_gadget_get_node (GTK_CSS_GADGET (self)));
+
   if (self->priv->rendered_surface != NULL)
-    {
-      gtk_css_style_render_icon_surface (gtk_css_node_get_style (gtk_css_gadget_get_node (GTK_CSS_GADGET (self))),
-                                         cr,
-                                         self->priv->rendered_surface,
-                                         x, y);
-    }
+    gtk_css_style_render_icon_surface (style,
+                                       cr,
+                                       self->priv->rendered_surface,
+                                       x, y);
 }
 
 gboolean